Skip to content

Conversation

@ethangreen-dev
Copy link
Member

No description provided.

This is done so to better handle the mapping of modloader variants to
specific package installers. We do so via enum as any modification of
these variants will incur a compilation error that must be handled.
This commit contains two major features: Traits that define the behavior
of filesystem operations and installer functionality, and an early
implementation of the bepinex package installer which uses this
functionality.

New traits:
- TrackedFs, which defines the API by which the installer will interact
  with the filesystem.
- PackageInstaller, which defines the functionality and types that an
  installer implementee must define / consume to function.
... And a small edit to the PackageInstaller trait install_package and
uninstall_package functions to accept mutable self references, not
immutable.

In theory this is fine but it opens up problems if we plan on
multithreading file ops due to rust's mutable borrow rules. If this
becomes a problem (and we NEED mutability) we can rely on something like
a RefCell<T: TrackedFile> at the cost of some runtime peformance.
@coderabbitai
Copy link

coderabbitai bot commented Sep 18, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds package installer generics and a BepInEx implementation by introducing a development dependency and workspace configuration.

  • Add dir-diff development dependency for directory comparison functionality
  • Configure cargo workspace directory environment variable

Reviewed Changes

Copilot reviewed 2 out of 1119 changed files in this pull request and generated no comments.

File Description
Cargo.toml Adds dir-diff development dependency for testing directory operations
.cargo/config.toml Sets up workspace directory environment variable configuration

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants